/********************************************
 * 功能说明: Mybatis实体生成类
 * 模块名称: 生成模块
 * 系统名称: java敏捷开发通用平台
 * 软件版权:
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2017年7月14日 下午1:48:50
 * 审核人员:
 * 相关文档:
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.database.mybatis.generator;

import com.hyacinth.database.mybatis.generator.template.Template;
import com.hyacinth.utils.JDBCUtils;
import com.hyacinth.utils.StringUtils;

import java.sql.ResultSet;
import java.sql.SQLException;


/**
 * Mybatis实体生成类
 * @author zhangfb
 * @version 1.0.0.1
 */
public class DaoGenerator extends BaseGenerator {
	
	private String tableName;
	
	public static void main(String[] args) {
		DaoGenerator generator = new DaoGenerator();
		generator.setTableName("hoyi_subsidy_rule");
		generator.setModuleName("银行模块");
		generator.setPackageName("com.aghoo.ifpbiz.modules.bank.dao");
		generator.execute();
	}
	
	// 初始化
	public void init() {
		setTempType("mybatis.dao");
	}
	
	/**
	 * 增加替换参数
	 * @return
	 */
	public void addTemplateParams(Template template) {
		template.put("${tableName}", tableName);
		String basePackage = packageName.replace(".dao", "");
		template.put("${basePackage}", basePackage);
	}
	
	/**
	 * 生成字段内容
	 * @return
	 */
	public String getFieldContent() {
		return null;
	}
	
	/**
	 * 生成方法内容
	 * @return
	 */
	public String getMethodContent() {
		return null;
	}

	public String getTableName() {
		return tableName;
	}

	public void setTableName(String tableName) {
		this.tableName = tableName;
		this.javaName = getJavaName(tableName);
		this.fileName = this.javaName + "Dao.java";
		this.className = getClassName(tableName);
	}
	
	public String getJavaName(String tableName) {
		String className = tableName;
		if (tableName.startsWith("hoyi_")) {
			className = tableName.substring(5);
		}
		className = StringUtils.toCamelCase(className);
		return className.substring(0, 1).toUpperCase() + className.substring(1);
	}
	
	/**
	 * 获取表注释
	 * @param tableName
	 * @return
	 */
	public String getClassName(String tableName) {
		String tableComment = null;
		ResultSet rs = JDBCUtils.query("SHOW TABLE STATUS LIKE ? ", tableName);
		try {
			if (rs.next()) {
				tableComment = rs.getString("COMMENT");
			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return tableComment;
	}

}
